package DAO;

import java.util.ArrayList;
import java.util.List;

import org.hibernate.Query;
import org.hibernate.SessionFactory;
import org.hibernate.classic.Session;

import Beans.SucursalBean;
import HibernateUtils.HibernateUtil;
import Model.Sucursal;

public class HibernateSucursalDAO {
	private static HibernateSucursalDAO instancia;
	private static SessionFactory sf;
	
	private HibernateSucursalDAO(){
		
	}
	public static HibernateSucursalDAO getInstancia(){
		if(instancia==null){
			sf=HibernateUtil.getSessionFactory();
			instancia=new HibernateSucursalDAO();
		}
		return instancia;
	}
	
	public void grabarSurcursal(SucursalBean sucursalBean){
		/*Abro sesion y grabo el objeto*/
		Session sesion= sf.openSession();
		sesion.beginTransaction();
		sesion.persist(sucursalBean);
		sesion.flush();
		sesion.getTransaction().commit();
		sesion.close();
	}
	public void merge(SucursalBean sucursalBean) {
		Session sesion= sf.openSession();
		sesion.beginTransaction();
		sesion.merge(sucursalBean);
		sesion.flush();
		sesion.getTransaction().commit();
		sesion.close();
		
	}
	public List<SucursalBean> list() {
		Session sesion=sf.openSession();
		sesion.beginTransaction();
		Query query=sesion.createQuery("from SucursalBean");
		List<SucursalBean> sucursales=new ArrayList<SucursalBean>();
		sucursales=query.list();
		return sucursales;
	}
	public SucursalBean buscarSucursal(SucursalBean sb) {
		Session sesion=sf.openSession();
		SucursalBean sucursal=(SucursalBean) sesion.get(SucursalBean.class, sb.getIdSucursal());
		sesion.close();
		return sucursal;
	}
	public void update(SucursalBean s) {
		Session sesion= sf.openSession();
		sesion.beginTransaction();
		sesion.update(s);
		sesion.getTransaction().commit();
		sesion.flush();
		sesion.close();
	}
	public SucursalBean buscarSucursalxNombre(String sucursalDestino) {
		Sucursal sb = new Sucursal();
		sb.setNombre(sucursalDestino);
		Session sesion=sf.openSession();
		SucursalBean sucursal=(SucursalBean) sesion.get(SucursalBean.class, sb.getNombre());
		sesion.close();
		return sucursal;
	}
	
}
